1 module directx.com; 2 3 version(Windows): 4 5 public import directx.win32; 6 public import core.sys.windows.basetyps; 7 8 //Copy paste from core.sys.windows.unknwn for less dependencies. 9 extern (Windows) { 10 nothrow: 11 void* MIDL_user_allocate(size_t); 12 void MIDL_user_free(void*); 13 interface IUnknown { 14 HRESULT QueryInterface(IID* riid, void** pvObject); 15 ULONG AddRef(); 16 ULONG Release(); 17 } 18 19 alias IUnknown LPUNKNOWN; 20 21 interface IClassFactory : IUnknown { 22 HRESULT CreateInstance(IUnknown UnkOuter, IID* riid, void** pvObject); 23 HRESULT LockServer(BOOL fLock); 24 } 25 alias IClassFactory LPCLASSFACTORY; 26 } 27 alias const(GUID)* REFGUID, REFIID, REFCLSID, REFFMTID; 28 29 mixin( uuid!(IUnknown, "00000000-0000-0000-C000-000000000046")); 30 mixin( uuid!(IClassFactory,"00000001-0000-0000-C000-000000000046")); 31 32 template uuid(T, const char[] g) { 33 const char [] uuid = 34 "const IID IID_"~T.stringof~"={ 0x" ~ g[0..8] ~ ",0x" ~ g[9..13] ~ ",0x" ~ g[14..18] ~ ",[0x" ~ g[19..21] ~ ",0x" ~ g[21..23] ~ ",0x" ~ g[24..26] ~ ",0x" ~ g[26..28] ~ ",0x" ~ g[28..30] ~ ",0x" ~ g[30..32] ~ ",0x" ~ g[32..34] ~ ",0x" ~ g[34..36] ~ "]};"~ 35 "template uuidof(T:"~T.stringof~"){"~ 36 " const IID uuidof ={ 0x" ~ g[0..8] ~ ",0x" ~ g[9..13] ~ ",0x" ~ g[14..18] ~ ",[0x" ~ g[19..21] ~ ",0x" ~ g[21..23] ~ ",0x" ~ g[24..26] ~ ",0x" ~ g[26..28] ~ ",0x" ~ g[28..30] ~ ",0x" ~ g[30..32] ~ ",0x" ~ g[32..34] ~ ",0x" ~ g[34..36] ~ "]};"~ 37 "}"; 38 } 39 40 // from intsafe.h 41 enum INTSAFE_E_ARITHMETIC_OVERFLOW = cast(HRESULT)0x80070216L; // 0x216 = 534 = ERROR_ARITHMETIC_OVERFLOW 42 43 // Interface from DocumentTarget.h 44 mixin(uuid!(IPrintDocumentPackageTarget, "1b8efec4-3019-4c27-964e-367202156906")); 45 interface IPrintDocumentPackageTarget : IUnknown 46 { 47 extern(Windows): 48 /* [helpstring] */ HRESULT GetPackageTargetTypes( 49 /* [out] */ UINT32* targetCount, 50 /* [size_is][size_is][out] */ GUID** targetTypes); 51 52 /* [helpstring] */ HRESULT GetPackageTarget( 53 /* [in] */ REFGUID guidTargetType, 54 /* [in] */ REFIID riid, 55 /* [iid_is][out] */ void** ppvTarget); 56 57 HRESULT Cancel(); 58 59 }